package com.tedu.api.io;

import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.util.Objects;
import java.util.logging.Filter;

/**
 * ListFiles()    返回值:数组--file[]    获取当前目录下所有子项[文件 文件夹]
 * 直接遍历文件文件夹
 * 需求:过滤遍历出来的文件或者文件夹  获取API项目下名字开头叫做s的 名称
 * ListFiles(Filter接口)   返回值:数组--file[]
 * Filter接口过滤器接口 :过滤遍历出来的文件、文件夹
 */
public class FilterAPI {
    public static void main(String[] args) {//青回
       //获取"API"下  File构造器传入
       // File file=new File("."+File.separator+"API");//.代表当前项目文件夹下
       /* //创建实现类
        MyFilter myFilter=new MyFilter();
        //获取到 API 项目下所有文件夹  且必须是S开头的
        File[] subs=file.listFiles(myFilter);//传入过滤器接口对象  自己写实现类:MyFilter
        //遍历集合数组
        for(int i=0;i<subs.length;i++){//获取数组下标
            //数组名[下标]
            System.out.println("过滤后的文件夹:"+subs[i].getName());

        }*/
           // File[] subs = new File("."+File.separator+"API").listFiles(pathname -> {return pathname.getName().startsWith("s");});
           // for (int i = 0; i < subs.length; i++) {
           //     System.out.println("所有文件和文件夹名：" + subs[i].getName());
           // }
        for(File f:new File("."+File.separator+"API").listFiles(pathname -> {return pathname.getName().startsWith("s");})){
            System.out.println("所有文件和文件夹名：" + f.getName());
            }
        }
}
//在这里  自己实现类 MyFilter  实现  FileFilter接口:重写其中所有方法
class MyFilter implements/*原始方法进行*/ FileFilter{//光标放  实现方法
    //accept方法:帮我们获取到一个(这里是File)文件信息 Filter提供 逻辑判断条件满足:返回值ture反之false
    public boolean accept(File pathname) {
        //写逻辑  判断获取文件夹是s开头的
        //获取到过滤器传给我们的pathname[File]的名字
        String name=pathname.getName();//交给String成String类型
        //打印获取到的File名称
        System.out.println("获取的名字："+name);
        //判断名称以s开头的文件夹  startsWidth("")获取字符串中首字符 包含则返回 true 返回值：booelan
        return name.startsWith("s");//在这里拿
    }
}
